home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / awt / SunToolkit.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  27.3 KB  |  1,263 lines

  1. package sun.awt;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.AWTException;
  5. import java.awt.Button;
  6. import java.awt.Canvas;
  7. import java.awt.Checkbox;
  8. import java.awt.CheckboxMenuItem;
  9. import java.awt.Choice;
  10. import java.awt.Component;
  11. import java.awt.Container;
  12. import java.awt.DefaultFocusTraversalPolicy;
  13. import java.awt.DefaultKeyboardFocusManager;
  14. import java.awt.Dialog;
  15. import java.awt.Dimension;
  16. import java.awt.EventQueue;
  17. import java.awt.FileDialog;
  18. import java.awt.FocusTraversalPolicy;
  19. import java.awt.Font;
  20. import java.awt.FontMetrics;
  21. import java.awt.Frame;
  22. import java.awt.Graphics2D;
  23. import java.awt.GraphicsDevice;
  24. import java.awt.GraphicsEnvironment;
  25. import java.awt.HeadlessException;
  26. import java.awt.Image;
  27. import java.awt.KeyboardFocusManager;
  28. import java.awt.Label;
  29. import java.awt.List;
  30. import java.awt.Menu;
  31. import java.awt.MenuBar;
  32. import java.awt.MenuComponent;
  33. import java.awt.MenuItem;
  34. import java.awt.Panel;
  35. import java.awt.PopupMenu;
  36. import java.awt.RenderingHints;
  37. import java.awt.Robot;
  38. import java.awt.ScrollPane;
  39. import java.awt.Scrollbar;
  40. import java.awt.SystemTray;
  41. import java.awt.TextArea;
  42. import java.awt.TextField;
  43. import java.awt.Toolkit;
  44. import java.awt.TrayIcon;
  45. import java.awt.Window;
  46. import java.awt.Dialog.ModalExclusionType;
  47. import java.awt.Dialog.ModalityType;
  48. import java.awt.dnd.DragGestureEvent;
  49. import java.awt.dnd.InvalidDnDOperationException;
  50. import java.awt.dnd.peer.DragSourceContextPeer;
  51. import java.awt.event.KeyEvent;
  52. import java.awt.event.WindowEvent;
  53. import java.awt.image.BufferedImage;
  54. import java.awt.image.DataBuffer;
  55. import java.awt.image.DataBufferInt;
  56. import java.awt.image.ImageObserver;
  57. import java.awt.image.ImageProducer;
  58. import java.awt.image.Raster;
  59. import java.awt.image.WritableRaster;
  60. import java.awt.peer.ButtonPeer;
  61. import java.awt.peer.CanvasPeer;
  62. import java.awt.peer.CheckboxMenuItemPeer;
  63. import java.awt.peer.CheckboxPeer;
  64. import java.awt.peer.ChoicePeer;
  65. import java.awt.peer.DialogPeer;
  66. import java.awt.peer.FileDialogPeer;
  67. import java.awt.peer.FontPeer;
  68. import java.awt.peer.FramePeer;
  69. import java.awt.peer.KeyboardFocusManagerPeer;
  70. import java.awt.peer.LabelPeer;
  71. import java.awt.peer.ListPeer;
  72. import java.awt.peer.MenuBarPeer;
  73. import java.awt.peer.MenuItemPeer;
  74. import java.awt.peer.MenuPeer;
  75. import java.awt.peer.MouseInfoPeer;
  76. import java.awt.peer.PanelPeer;
  77. import java.awt.peer.PopupMenuPeer;
  78. import java.awt.peer.RobotPeer;
  79. import java.awt.peer.ScrollPanePeer;
  80. import java.awt.peer.ScrollbarPeer;
  81. import java.awt.peer.SystemTrayPeer;
  82. import java.awt.peer.TextAreaPeer;
  83. import java.awt.peer.TextFieldPeer;
  84. import java.awt.peer.TrayIconPeer;
  85. import java.awt.peer.WindowPeer;
  86. import java.io.FilePermission;
  87. import java.io.IOException;
  88. import java.lang.reflect.Constructor;
  89. import java.lang.reflect.Field;
  90. import java.lang.reflect.InvocationTargetException;
  91. import java.lang.reflect.Method;
  92. import java.net.SocketPermission;
  93. import java.net.URL;
  94. import java.security.AccessController;
  95. import java.security.Permission;
  96. import java.security.PrivilegedActionException;
  97. import java.util.Collections;
  98. import java.util.Hashtable;
  99. import java.util.Locale;
  100. import java.util.Map;
  101. import java.util.WeakHashMap;
  102. import java.util.concurrent.TimeUnit;
  103. import java.util.concurrent.locks.Condition;
  104. import java.util.concurrent.locks.ReentrantLock;
  105. import java.util.logging.Level;
  106. import java.util.logging.Logger;
  107. import sun.awt.im.InputContext;
  108. import sun.awt.im.SimpleInputMethodWindow;
  109. import sun.awt.image.ByteArrayImageSource;
  110. import sun.awt.image.FileImageSource;
  111. import sun.awt.image.ImageRepresentation;
  112. import sun.awt.image.ToolkitImage;
  113. import sun.awt.image.URLImageSource;
  114. import sun.font.FontDesignMetrics;
  115. import sun.misc.SoftCache;
  116. import sun.security.action.GetBooleanAction;
  117. import sun.security.action.GetPropertyAction;
  118.  
  119. public abstract class SunToolkit extends Toolkit implements WindowClosingSupport, WindowClosingListener, ComponentFactory, InputMethodSupport {
  120.    private static final Logger log = Logger.getLogger("sun.awt.SunToolkit");
  121.    public static final int GRAB_EVENT_MASK = Integer.MIN_VALUE;
  122.    private static Field syncLWRequestsField;
  123.    private static Method wakeupMethod;
  124.    private static Field componentKeyField;
  125.    private static Field menuComponentKeyField;
  126.    private static Field trayIconKeyField;
  127.    private static Field isPostedField;
  128.    private static final String POST_EVENT_QUEUE_KEY = "PostEventQueue";
  129.    private static final ReentrantLock AWT_LOCK = new ReentrantLock();
  130.    private static final Condition AWT_LOCK_COND;
  131.    protected static final Hashtable peerMap;
  132.    private static final Map appContextMap;
  133.    static SoftCache imgCache;
  134.    private static Locale startupLocale;
  135.    private static String dataTransfererClassName;
  136.    private transient WindowClosingListener windowClosingListener;
  137.    private static DefaultMouseInfoPeer mPeer;
  138.    private static Dialog.ModalExclusionType DEFAULT_MODAL_EXCLUSION_TYPE;
  139.    private ModalityListenerList modalityListeners;
  140.    public static final int WAIT_TIME = 10000;
  141.    private static final int MAX_ITERS = 20;
  142.    private static final int MIN_ITERS = 0;
  143.    private static final int MINIMAL_EDELAY = 0;
  144.    private boolean eventDispatched;
  145.    private boolean queueEmpty;
  146.    private final Object waitLock;
  147.    static Method eqNoEvents;
  148.    private static boolean checkedSystemAAFontSettings;
  149.    private static boolean useSystemAAFontSettings;
  150.    private static boolean lastExtraCondition;
  151.    private static RenderingHints desktopFontHints;
  152.    public static final String DESKTOPFONTHINTS = "awt.font.desktophints";
  153.    private static Method consumeNextKeyTypedMethod;
  154.  
  155.    public SunToolkit() {
  156.       DebugHelper.init();
  157.       this.windowClosingListener = null;
  158.       this.modalityListeners = new ModalityListenerList();
  159.       this.eventDispatched = false;
  160.       this.queueEmpty = false;
  161.       this.waitLock = "Wait Lock";
  162.       ThreadGroup var1 = null;
  163.       String var2 = System.getProperty("awt.threadgroup", "");
  164.       if (var2.length() != 0) {
  165.          try {
  166.             Constructor var3 = Class.forName(var2).getConstructor(String.class);
  167.             var1 = (ThreadGroup)var3.newInstance("AWT-ThreadGroup");
  168.          } catch (Exception var7) {
  169.             System.err.println("Failed loading " + var2 + ": " + var7);
  170.          }
  171.       }
  172.  
  173.       1 var8 = new 1(this);
  174.       if (var1 != null) {
  175.          Thread var4 = new Thread(var1, var8, "EventQueue-Init");
  176.          var4.start();
  177.  
  178.          try {
  179.             var4.join();
  180.          } catch (InterruptedException var6) {
  181.             var6.printStackTrace();
  182.          }
  183.       } else {
  184.          var8.run();
  185.       }
  186.  
  187.    }
  188.  
  189.    public boolean useBufferPerWindow() {
  190.       return false;
  191.    }
  192.  
  193.    public abstract WindowPeer createWindow(Window var1) throws HeadlessException;
  194.  
  195.    public abstract FramePeer createFrame(Frame var1) throws HeadlessException;
  196.  
  197.    public abstract DialogPeer createDialog(Dialog var1) throws HeadlessException;
  198.  
  199.    public abstract ButtonPeer createButton(Button var1) throws HeadlessException;
  200.  
  201.    public abstract TextFieldPeer createTextField(TextField var1) throws HeadlessException;
  202.  
  203.    public abstract ChoicePeer createChoice(Choice var1) throws HeadlessException;
  204.  
  205.    public abstract LabelPeer createLabel(Label var1) throws HeadlessException;
  206.  
  207.    public abstract ListPeer createList(List var1) throws HeadlessException;
  208.  
  209.    public abstract CheckboxPeer createCheckbox(Checkbox var1) throws HeadlessException;
  210.  
  211.    public abstract ScrollbarPeer createScrollbar(Scrollbar var1) throws HeadlessException;
  212.  
  213.    public abstract ScrollPanePeer createScrollPane(ScrollPane var1) throws HeadlessException;
  214.  
  215.    public abstract TextAreaPeer createTextArea(TextArea var1) throws HeadlessException;
  216.  
  217.    public abstract FileDialogPeer createFileDialog(FileDialog var1) throws HeadlessException;
  218.  
  219.    public abstract MenuBarPeer createMenuBar(MenuBar var1) throws HeadlessException;
  220.  
  221.    public abstract MenuPeer createMenu(Menu var1) throws HeadlessException;
  222.  
  223.    public abstract PopupMenuPeer createPopupMenu(PopupMenu var1) throws HeadlessException;
  224.  
  225.    public abstract MenuItemPeer createMenuItem(MenuItem var1) throws HeadlessException;
  226.  
  227.    public abstract CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem var1) throws HeadlessException;
  228.  
  229.    public abstract DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent var1) throws InvalidDnDOperationException;
  230.  
  231.    public abstract TrayIconPeer createTrayIcon(TrayIcon var1) throws HeadlessException, AWTException;
  232.  
  233.    public abstract SystemTrayPeer createSystemTray(SystemTray var1);
  234.  
  235.    public abstract boolean isTraySupported();
  236.  
  237.    public abstract FontPeer getFontPeer(String var1, int var2);
  238.  
  239.    public abstract RobotPeer createRobot(Robot var1, GraphicsDevice var2) throws AWTException;
  240.  
  241.    public KeyboardFocusManagerPeer createKeyboardFocusManagerPeer(KeyboardFocusManager var1) throws HeadlessException {
  242.       KeyboardFocusManagerPeerImpl var2 = new KeyboardFocusManagerPeerImpl(var1);
  243.       return var2;
  244.    }
  245.  
  246.    public static final void awtLock() {
  247.       AWT_LOCK.lock();
  248.    }
  249.  
  250.    public static final boolean awtTryLock() {
  251.       return AWT_LOCK.tryLock();
  252.    }
  253.  
  254.    public static final void awtUnlock() {
  255.       AWT_LOCK.unlock();
  256.    }
  257.  
  258.    public static final void awtLockWait() throws InterruptedException {
  259.       AWT_LOCK_COND.await();
  260.    }
  261.  
  262.    public static final void awtLockWait(long var0) throws InterruptedException {
  263.       AWT_LOCK_COND.await(var0, TimeUnit.MILLISECONDS);
  264.    }
  265.  
  266.    public static final void awtLockNotify() {
  267.       AWT_LOCK_COND.signal();
  268.    }
  269.  
  270.    public static final void awtLockNotifyAll() {
  271.       AWT_LOCK_COND.signalAll();
  272.    }
  273.  
  274.    public static final boolean isAWTLockHeldByCurrentThread() {
  275.       return AWT_LOCK.isHeldByCurrentThread();
  276.    }
  277.  
  278.    public static AppContext createNewAppContext() {
  279.       ThreadGroup var0 = Thread.currentThread().getThreadGroup();
  280.       String var2 = Toolkit.getProperty("AWT.EventQueueClass", "java.awt.EventQueue");
  281.  
  282.       EventQueue var1;
  283.       try {
  284.          var1 = (EventQueue)Class.forName(var2).newInstance();
  285.       } catch (Exception var5) {
  286.          System.err.println("Failed loading " + var2 + ": " + var5);
  287.          var1 = new EventQueue();
  288.       }
  289.  
  290.       AppContext var3 = new AppContext(var0);
  291.       var3.put(AppContext.EVENT_QUEUE_KEY, var1);
  292.       PostEventQueue var4 = new PostEventQueue(var1);
  293.       var3.put("PostEventQueue", var4);
  294.       return var3;
  295.    }
  296.  
  297.    private static Object getPrivateKey(Object var0) {
  298.       Object var1 = null;
  299.  
  300.       try {
  301.          if (var0 instanceof Component) {
  302.             if (componentKeyField == null) {
  303.                componentKeyField = getField(Component.class, "privateKey");
  304.             }
  305.  
  306.             var1 = componentKeyField.get(var0);
  307.          } else if (var0 instanceof MenuComponent) {
  308.             if (menuComponentKeyField == null) {
  309.                menuComponentKeyField = getField(MenuComponent.class, "privateKey");
  310.             }
  311.  
  312.             var1 = menuComponentKeyField.get(var0);
  313.          } else if (var0 instanceof TrayIcon) {
  314.             if (trayIconKeyField == null) {
  315.                trayIconKeyField = getField(TrayIcon.class, "privateKey");
  316.             }
  317.  
  318.             var1 = trayIconKeyField.get(var0);
  319.          }
  320.       } catch (IllegalAccessException var3) {
  321.          assert false;
  322.       }
  323.  
  324.       return var1;
  325.    }
  326.  
  327.    private static Field getField(Class var0, String var1) {
  328.       return (Field)AccessController.doPrivileged(new 2(var0, var1));
  329.    }
  330.  
  331.    static void wakeupEventQueue(EventQueue var0, boolean var1) {
  332.       if (wakeupMethod == null) {
  333.          wakeupMethod = (Method)AccessController.doPrivileged(new 3());
  334.       }
  335.  
  336.       try {
  337.          if (wakeupMethod != null) {
  338.             wakeupMethod.invoke(var0, var1);
  339.          }
  340.       } catch (InvocationTargetException var3) {
  341.          assert false;
  342.       } catch (IllegalAccessException var4) {
  343.          assert false;
  344.       }
  345.  
  346.    }
  347.  
  348.    protected static Object targetToPeer(Object var0) {
  349.       return var0 != null && !GraphicsEnvironment.isHeadless() ? peerMap.get(getPrivateKey(var0)) : null;
  350.    }
  351.  
  352.    protected static void targetCreatedPeer(Object var0, Object var1) {
  353.       if (var0 != null && var1 != null && !GraphicsEnvironment.isHeadless()) {
  354.          peerMap.put(getPrivateKey(var0), var1);
  355.       }
  356.  
  357.    }
  358.  
  359.    protected static void targetDisposedPeer(Object var0, Object var1) {
  360.       if (var0 != null && var1 != null && !GraphicsEnvironment.isHeadless()) {
  361.          Object var2 = getPrivateKey(var0);
  362.          if (peerMap.get(var2) == var1) {
  363.             peerMap.remove(var2);
  364.          }
  365.       }
  366.  
  367.    }
  368.  
  369.    private static native boolean setAppContext(Object var0, AppContext var1);
  370.  
  371.    private static native AppContext getAppContext(Object var0);
  372.  
  373.    public static AppContext targetToAppContext(Object var0) {
  374.       if (var0 != null && !GraphicsEnvironment.isHeadless()) {
  375.          AppContext var1 = getAppContext(var0);
  376.          if (var1 == null) {
  377.             var1 = (AppContext)appContextMap.get(var0);
  378.          }
  379.  
  380.          return var1;
  381.       } else {
  382.          return null;
  383.       }
  384.    }
  385.  
  386.    public static void setLWRequestStatus(Window var0, boolean var1) {
  387.       if (syncLWRequestsField == null) {
  388.          syncLWRequestsField = getField(Window.class, "syncLWRequests");
  389.       }
  390.  
  391.       try {
  392.          if (syncLWRequestsField != null) {
  393.             syncLWRequestsField.setBoolean(var0, var1);
  394.          }
  395.       } catch (IllegalAccessException var3) {
  396.          assert false;
  397.       }
  398.  
  399.    }
  400.  
  401.    public static void checkAndSetPolicy(Container var0, boolean var1) {
  402.       Object var2 = KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalPolicy();
  403.       String var3 = Toolkit.getDefaultToolkit().getClass().getName();
  404.       if (!"sun.awt.X11.XToolkit".equals(var3)) {
  405.          var0.setFocusTraversalPolicy((FocusTraversalPolicy)var2);
  406.       } else {
  407.          String var4 = var2.getClass().getName();
  408.          if (DefaultFocusTraversalPolicy.class != var2.getClass()) {
  409.             if (var4.startsWith("java.awt.")) {
  410.                if (var1) {
  411.                   var2 = createLayoutPolicy();
  412.                }
  413.             } else if (var4.startsWith("javax.swing.") && !var1) {
  414.                var2 = new DefaultFocusTraversalPolicy();
  415.             }
  416.          } else if (var1) {
  417.             var2 = createLayoutPolicy();
  418.          }
  419.  
  420.          var0.setFocusTraversalPolicy((FocusTraversalPolicy)var2);
  421.       }
  422.    }
  423.  
  424.    private static FocusTraversalPolicy createLayoutPolicy() {
  425.       FocusTraversalPolicy var0 = null;
  426.  
  427.       try {
  428.          Class var1 = Class.forName("javax.swing.LayoutFocusTraversalPolicy");
  429.          var0 = (FocusTraversalPolicy)var1.newInstance();
  430.       } catch (ClassNotFoundException var2) {
  431.          assert false;
  432.       } catch (InstantiationException var3) {
  433.          assert false;
  434.       } catch (IllegalAccessException var4) {
  435.          assert false;
  436.       }
  437.  
  438.       return var0;
  439.    }
  440.  
  441.    public static void insertTargetMapping(Object var0, AppContext var1) {
  442.       if (!GraphicsEnvironment.isHeadless() && !setAppContext(var0, var1)) {
  443.          appContextMap.put(var0, var1);
  444.       }
  445.  
  446.    }
  447.  
  448.    public static void postEvent(AppContext var0, AWTEvent var1) {
  449.       if (var1 == null) {
  450.          throw new NullPointerException();
  451.       } else {
  452.          AppContext var2 = targetToAppContext(var1.getSource());
  453.          if (var2 != null && !var2.equals(var0)) {
  454.             log.fine("Event posted on wrong app context : " + var1);
  455.          }
  456.  
  457.          PostEventQueue var3 = (PostEventQueue)var0.get("PostEventQueue");
  458.          if (var3 != null) {
  459.             var3.postEvent(var1);
  460.          }
  461.  
  462.       }
  463.    }
  464.  
  465.    public static void postPriorityEvent(AWTEvent var0) {
  466.       if (isPostedField == null) {
  467.          isPostedField = getField(AWTEvent.class, "isPosted");
  468.       }
  469.  
  470.       PeerEvent var1 = new PeerEvent(Toolkit.getDefaultToolkit(), new 4(var0), 2L);
  471.       postEvent(targetToAppContext(var0.getSource()), var1);
  472.    }
  473.  
  474.    public static void flushPendingEvents() {
  475.       AppContext var0 = AppContext.getAppContext();
  476.       PostEventQueue var1 = (PostEventQueue)var0.get("PostEventQueue");
  477.       if (var1 != null) {
  478.          var1.flush();
  479.       }
  480.  
  481.    }
  482.  
  483.    public static boolean isPostEventQueueEmpty() {
  484.       AppContext var0 = AppContext.getAppContext();
  485.       PostEventQueue var1 = (PostEventQueue)var0.get("PostEventQueue");
  486.       return var1 != null ? var1.noEvents() : true;
  487.    }
  488.  
  489.    public static void executeOnEventHandlerThread(Object var0, Runnable var1) {
  490.       executeOnEventHandlerThread(new PeerEvent(var0, var1, 1L));
  491.    }
  492.  
  493.    public static void executeOnEventHandlerThread(Object var0, Runnable var1, long var2) {
  494.       executeOnEventHandlerThread(new 5(var0, var1, 1L, var2));
  495.    }
  496.  
  497.    public static void executeOnEventHandlerThread(PeerEvent var0) {
  498.       postEvent(targetToAppContext(var0.getSource()), var0);
  499.    }
  500.  
  501.    public static void executeOnEDTAndWait(Object var0, Runnable var1) throws InterruptedException, InvocationTargetException {
  502.       if (EventQueue.isDispatchThread()) {
  503.          throw new Error("Cannot call executeOnEDTAndWait from any event dispatcher thread");
  504.       } else {
  505.          1AWTInvocationLock var2 = new 1AWTInvocationLock();
  506.          PeerEvent var3 = new PeerEvent(var0, var1, var2, true, 1L);
  507.          synchronized(var2) {
  508.             executeOnEventHandlerThread(var3);
  509.             var2.wait();
  510.          }
  511.  
  512.          Throwable var4 = var3.getThrowable();
  513.          if (var4 != null) {
  514.             throw new InvocationTargetException(var4);
  515.          }
  516.       }
  517.    }
  518.  
  519.    private static EventQueue getNextQueue(Object var0) {
  520.       EventQueue var1 = null;
  521.  
  522.       try {
  523.          Field var2 = getField(EventQueue.class, "nextQueue");
  524.          var1 = (EventQueue)var2.get(var0);
  525.       } catch (IllegalAccessException var3) {
  526.          assert false;
  527.       }
  528.  
  529.       return var1;
  530.    }
  531.  
  532.    private static Thread getDispatchThread(Object var0) {
  533.       Thread var1 = null;
  534.  
  535.       try {
  536.          Field var2 = getField(EventQueue.class, "dispatchThread");
  537.          var1 = (Thread)var2.get(var0);
  538.       } catch (IllegalAccessException var3) {
  539.          assert false;
  540.       }
  541.  
  542.       return var1;
  543.    }
  544.  
  545.    public static boolean isDispatchThreadForAppContext(Object var0) {
  546.       AppContext var1 = targetToAppContext(var0);
  547.       EventQueue var2 = (EventQueue)var1.get(AppContext.EVENT_QUEUE_KEY);
  548.  
  549.       for(EventQueue var3 = getNextQueue(var2); var3 != null; var3 = getNextQueue(var3)) {
  550.          var2 = var3;
  551.       }
  552.  
  553.       return Thread.currentThread() == getDispatchThread(var2);
  554.    }
  555.  
  556.    public Dimension getScreenSize() {
  557.       return new Dimension(this.getScreenWidth(), this.getScreenHeight());
  558.    }
  559.  
  560.    protected abstract int getScreenWidth();
  561.  
  562.    protected abstract int getScreenHeight();
  563.  
  564.    public FontMetrics getFontMetrics(Font var1) {
  565.       return FontDesignMetrics.getMetrics(var1);
  566.    }
  567.  
  568.    public String[] getFontList() {
  569.       String[] var1 = new String[]{"Dialog", "SansSerif", "Serif", "Monospaced", "DialogInput"};
  570.       return var1;
  571.    }
  572.  
  573.    public PanelPeer createPanel(Panel var1) {
  574.       return (PanelPeer)this.createComponent(var1);
  575.    }
  576.  
  577.    public CanvasPeer createCanvas(Canvas var1) {
  578.       return (CanvasPeer)this.createComponent(var1);
  579.    }
  580.  
  581.    public void disableBackgroundErase(Canvas var1) {
  582.       if (!var1.isDisplayable()) {
  583.          throw new IllegalStateException("Canvas must have a valid peer");
  584.       }
  585.    }
  586.  
  587.    static synchronized Image getImageFromHash(Toolkit var0, URL var1) {
  588.       SecurityManager var2 = System.getSecurityManager();
  589.       if (var2 != null) {
  590.          try {
  591.             Permission var3 = var1.openConnection().getPermission();
  592.             if (var3 != null) {
  593.                try {
  594.                   var2.checkPermission(var3);
  595.                } catch (SecurityException var6) {
  596.                   if (var3 instanceof FilePermission && var3.getActions().indexOf("read") != -1) {
  597.                      var2.checkRead(var3.getName());
  598.                   } else {
  599.                      if (!(var3 instanceof SocketPermission) || var3.getActions().indexOf("connect") == -1) {
  600.                         throw var6;
  601.                      }
  602.  
  603.                      var2.checkConnect(var1.getHost(), var1.getPort());
  604.                   }
  605.                }
  606.             }
  607.          } catch (IOException var7) {
  608.             var2.checkConnect(var1.getHost(), var1.getPort());
  609.          }
  610.       }
  611.  
  612.       Image var8 = (Image)imgCache.get(var1);
  613.       if (var8 == null) {
  614.          try {
  615.             var8 = var0.createImage(new URLImageSource(var1));
  616.             imgCache.put(var1, var8);
  617.          } catch (Exception var5) {
  618.          }
  619.       }
  620.  
  621.       return var8;
  622.    }
  623.  
  624.    static synchronized Image getImageFromHash(Toolkit var0, String var1) {
  625.       SecurityManager var2 = System.getSecurityManager();
  626.       if (var2 != null) {
  627.          var2.checkRead(var1);
  628.       }
  629.  
  630.       Image var3 = (Image)imgCache.get(var1);
  631.       if (var3 == null) {
  632.          try {
  633.             var3 = var0.createImage(new FileImageSource(var1));
  634.             imgCache.put(var1, var3);
  635.          } catch (Exception var5) {
  636.          }
  637.       }
  638.  
  639.       return var3;
  640.    }
  641.  
  642.    public Image getImage(String var1) {
  643.       return getImageFromHash(this, (String)var1);
  644.    }
  645.  
  646.    public Image getImage(URL var1) {
  647.       return getImageFromHash(this, (URL)var1);
  648.    }
  649.  
  650.    public Image createImage(String var1) {
  651.       SecurityManager var2 = System.getSecurityManager();
  652.       if (var2 != null) {
  653.          var2.checkRead(var1);
  654.       }
  655.  
  656.       return this.createImage((ImageProducer)(new FileImageSource(var1)));
  657.    }
  658.  
  659.    public Image createImage(URL var1) {
  660.       SecurityManager var2 = System.getSecurityManager();
  661.       if (var2 != null) {
  662.          try {
  663.             Permission var3 = var1.openConnection().getPermission();
  664.             if (var3 != null) {
  665.                try {
  666.                   var2.checkPermission(var3);
  667.                } catch (SecurityException var5) {
  668.                   if (var3 instanceof FilePermission && var3.getActions().indexOf("read") != -1) {
  669.                      var2.checkRead(var3.getName());
  670.                   } else {
  671.                      if (!(var3 instanceof SocketPermission) || var3.getActions().indexOf("connect") == -1) {
  672.                         throw var5;
  673.                      }
  674.  
  675.                      var2.checkConnect(var1.getHost(), var1.getPort());
  676.                   }
  677.                }
  678.             }
  679.          } catch (IOException var6) {
  680.             var2.checkConnect(var1.getHost(), var1.getPort());
  681.          }
  682.       }
  683.  
  684.       return this.createImage((ImageProducer)(new URLImageSource(var1)));
  685.    }
  686.  
  687.    public Image createImage(byte[] var1, int var2, int var3) {
  688.       return this.createImage((ImageProducer)(new ByteArrayImageSource(var1, var2, var3)));
  689.    }
  690.  
  691.    public Image createImage(ImageProducer var1) {
  692.       return new ToolkitImage(var1);
  693.    }
  694.  
  695.    public int checkImage(Image var1, int var2, int var3, ImageObserver var4) {
  696.       if (!(var1 instanceof ToolkitImage)) {
  697.          return 32;
  698.       } else {
  699.          ToolkitImage var5 = (ToolkitImage)var1;
  700.          int var6;
  701.          if (var2 != 0 && var3 != 0) {
  702.             var6 = var5.getImageRep().check(var4);
  703.          } else {
  704.             var6 = 32;
  705.          }
  706.  
  707.          return var5.check(var4) | var6;
  708.       }
  709.    }
  710.  
  711.    public boolean prepareImage(Image var1, int var2, int var3, ImageObserver var4) {
  712.       if (var2 != 0 && var3 != 0) {
  713.          if (!(var1 instanceof ToolkitImage)) {
  714.             return true;
  715.          } else {
  716.             ToolkitImage var5 = (ToolkitImage)var1;
  717.             if (var5.hasError()) {
  718.                if (var4 != null) {
  719.                   var4.imageUpdate(var1, 192, -1, -1, -1, -1);
  720.                }
  721.  
  722.                return false;
  723.             } else {
  724.                ImageRepresentation var6 = var5.getImageRep();
  725.                return var6.prepare(var4);
  726.             }
  727.          }
  728.       } else {
  729.          return true;
  730.       }
  731.    }
  732.  
  733.    public static BufferedImage getScaledIconImage(java.util.List<Image> var0, int var1, int var2) {
  734.       if (var1 != 0 && var2 != 0) {
  735.          Image var3 = null;
  736.          int var4 = 0;
  737.          int var5 = 0;
  738.          double var6 = (double)3.0F;
  739.          double var8 = (double)0.0F;
  740.  
  741.          for(Image var11 : var0) {
  742.             if (var11 == null) {
  743.                if (log.isLoggable(Level.FINEST)) {
  744.                   log.finest("SunToolkit.getScaledIconImage: Skipping the image passed into Java because it's null.");
  745.                }
  746.             } else {
  747.                if (var11 instanceof ToolkitImage) {
  748.                   ImageRepresentation var12 = ((ToolkitImage)var11).getImageRep();
  749.                   var12.reconstruct(32);
  750.                }
  751.  
  752.                int var13;
  753.                int var29;
  754.                try {
  755.                   var29 = var11.getWidth((ImageObserver)null);
  756.                   var13 = var11.getHeight((ImageObserver)null);
  757.                } catch (Exception var26) {
  758.                   if (log.isLoggable(Level.FINEST)) {
  759.                      log.finest("SunToolkit.getScaledIconImage: Perhaps the image passed into Java is broken. Skipping this icon.");
  760.                   }
  761.                   continue;
  762.                }
  763.  
  764.                if (var29 > 0 && var13 > 0) {
  765.                   double var14 = Math.min((double)var1 / (double)var29, (double)var2 / (double)var13);
  766.                   int var16 = 0;
  767.                   int var17 = 0;
  768.                   double var18 = (double)1.0F;
  769.                   if (var14 >= (double)2.0F) {
  770.                      var14 = Math.floor(var14);
  771.                      var16 = var29 * (int)var14;
  772.                      var17 = var13 * (int)var14;
  773.                      var18 = (double)1.0F - (double)0.5F / var14;
  774.                   } else if (var14 >= (double)1.0F) {
  775.                      var14 = (double)1.0F;
  776.                      var16 = var29;
  777.                      var17 = var13;
  778.                      var18 = (double)0.0F;
  779.                   } else if (var14 >= (double)0.75F) {
  780.                      var14 = (double)0.75F;
  781.                      var16 = var29 * 3 / 4;
  782.                      var17 = var13 * 3 / 4;
  783.                      var18 = 0.3;
  784.                   } else if (var14 >= 0.6666) {
  785.                      var14 = 0.6666;
  786.                      var16 = var29 * 2 / 3;
  787.                      var17 = var13 * 2 / 3;
  788.                      var18 = 0.33;
  789.                   } else {
  790.                      double var20 = Math.ceil((double)1.0F / var14);
  791.                      var14 = (double)1.0F / var20;
  792.                      var16 = (int)Math.round((double)var29 / var20);
  793.                      var17 = (int)Math.round((double)var13 / var20);
  794.                      var18 = (double)1.0F - (double)1.0F / var20;
  795.                   }
  796.  
  797.                   double var36 = ((double)var1 - (double)var16) / (double)var1 + ((double)var2 - (double)var17) / (double)var2 + var18;
  798.                   if (var36 < var6) {
  799.                      var6 = var36;
  800.                      var8 = var14;
  801.                      var3 = var11;
  802.                      var4 = var16;
  803.                      var5 = var17;
  804.                   }
  805.  
  806.                   if (var36 == (double)0.0F) {
  807.                      break;
  808.                   }
  809.                }
  810.             }
  811.          }
  812.  
  813.          if (var3 == null) {
  814.             return null;
  815.          } else {
  816.             BufferedImage var27 = new BufferedImage(var1, var2, 2);
  817.             Graphics2D var28 = var27.createGraphics();
  818.             var28.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
  819.  
  820.             try {
  821.                int var30 = (var1 - var4) / 2;
  822.                int var31 = (var2 - var5) / 2;
  823.                if (log.isLoggable(Level.FINER)) {
  824.                   log.finer("WWindowPeer.getScaledIconData() result : w : " + var1 + " h : " + var2 + " iW : " + var3.getWidth((ImageObserver)null) + " iH : " + var3.getHeight((ImageObserver)null) + " sim : " + var6 + " sf : " + var8 + " adjW : " + var4 + " adjH : " + var5 + " x : " + var30 + " y : " + var31);
  825.                }
  826.  
  827.                var28.drawImage(var3, var30, var31, var4, var5, (ImageObserver)null);
  828.             } finally {
  829.                var28.dispose();
  830.             }
  831.  
  832.             return var27;
  833.          }
  834.       } else {
  835.          return null;
  836.       }
  837.    }
  838.  
  839.    public static DataBufferInt getScaledIconData(java.util.List<Image> var0, int var1, int var2) {
  840.       BufferedImage var3 = getScaledIconImage(var0, var1, var2);
  841.       if (var3 == null) {
  842.          if (log.isLoggable(Level.FINEST)) {
  843.             log.finest("SunToolkit.getScaledIconData: Perhaps the image passed into Java is broken. Skipping this icon.");
  844.          }
  845.  
  846.          return null;
  847.       } else {
  848.          WritableRaster var4 = var3.getRaster();
  849.          DataBuffer var5 = ((Raster)var4).getDataBuffer();
  850.          return (DataBufferInt)var5;
  851.       }
  852.    }
  853.  
  854.    protected EventQueue getSystemEventQueueImpl() {
  855.       return getSystemEventQueueImplPP();
  856.    }
  857.  
  858.    static EventQueue getSystemEventQueueImplPP() {
  859.       return getSystemEventQueueImplPP(AppContext.getAppContext());
  860.    }
  861.  
  862.    public static EventQueue getSystemEventQueueImplPP(AppContext var0) {
  863.       EventQueue var1 = (EventQueue)var0.get(AppContext.EVENT_QUEUE_KEY);
  864.       return var1;
  865.    }
  866.  
  867.    public static Container getNativeContainer(Component var0) {
  868.       return Toolkit.getNativeContainer(var0);
  869.    }
  870.  
  871.    public Window createInputMethodWindow(String var1, InputContext var2) {
  872.       return new SimpleInputMethodWindow(var1, var2);
  873.    }
  874.  
  875.    public boolean enableInputMethodsForTextComponent() {
  876.       return false;
  877.    }
  878.  
  879.    public static Locale getStartupLocale() {
  880.       if (startupLocale == null) {
  881.          String var0 = (String)AccessController.doPrivileged(new GetPropertyAction("user.language", "en"));
  882.          String var1 = (String)AccessController.doPrivileged(new GetPropertyAction("user.region"));
  883.          String var2;
  884.          String var3;
  885.          if (var1 != null) {
  886.             int var4 = var1.indexOf(95);
  887.             if (var4 >= 0) {
  888.                var2 = var1.substring(0, var4);
  889.                var3 = var1.substring(var4 + 1);
  890.             } else {
  891.                var2 = var1;
  892.                var3 = "";
  893.             }
  894.          } else {
  895.             var2 = (String)AccessController.doPrivileged(new GetPropertyAction("user.country", ""));
  896.             var3 = (String)AccessController.doPrivileged(new GetPropertyAction("user.variant", ""));
  897.          }
  898.  
  899.          startupLocale = new Locale(var0, var2, var3);
  900.       }
  901.  
  902.       return startupLocale;
  903.    }
  904.  
  905.    public Locale getDefaultKeyboardLocale() {
  906.       return getStartupLocale();
  907.    }
  908.  
  909.    protected static void setDataTransfererClassName(String var0) {
  910.       dataTransfererClassName = var0;
  911.    }
  912.  
  913.    public static String getDataTransfererClassName() {
  914.       if (dataTransfererClassName == null) {
  915.          Toolkit.getDefaultToolkit();
  916.       }
  917.  
  918.       return dataTransfererClassName;
  919.    }
  920.  
  921.    public WindowClosingListener getWindowClosingListener() {
  922.       return this.windowClosingListener;
  923.    }
  924.  
  925.    public void setWindowClosingListener(WindowClosingListener var1) {
  926.       this.windowClosingListener = var1;
  927.    }
  928.  
  929.    public RuntimeException windowClosingNotify(WindowEvent var1) {
  930.       return this.windowClosingListener != null ? this.windowClosingListener.windowClosingNotify(var1) : null;
  931.    }
  932.  
  933.    public RuntimeException windowClosingDelivered(WindowEvent var1) {
  934.       return this.windowClosingListener != null ? this.windowClosingListener.windowClosingDelivered(var1) : null;
  935.    }
  936.  
  937.    protected synchronized MouseInfoPeer getMouseInfoPeer() {
  938.       if (mPeer == null) {
  939.          mPeer = new DefaultMouseInfoPeer();
  940.       }
  941.  
  942.       return mPeer;
  943.    }
  944.  
  945.    public static boolean needsXEmbed() {
  946.       String var0 = (String)AccessController.doPrivileged(new GetPropertyAction("sun.awt.noxembed", "false"));
  947.       if ("true".equals(var0)) {
  948.          return false;
  949.       } else {
  950.          Toolkit var1 = Toolkit.getDefaultToolkit();
  951.          return var1 instanceof SunToolkit ? ((SunToolkit)var1).needsXEmbedImpl() : false;
  952.       }
  953.    }
  954.  
  955.    protected boolean needsXEmbedImpl() {
  956.       return false;
  957.    }
  958.  
  959.    protected final boolean isXEmbedServerRequested() {
  960.       return (Boolean)AccessController.doPrivileged(new GetBooleanAction("sun.awt.xembedserver"));
  961.    }
  962.  
  963.    public static boolean isModalExcludedSupported() {
  964.       Toolkit var0 = Toolkit.getDefaultToolkit();
  965.       return var0.isModalExclusionTypeSupported(DEFAULT_MODAL_EXCLUSION_TYPE);
  966.    }
  967.  
  968.    protected boolean isModalExcludedSupportedImpl() {
  969.       return false;
  970.    }
  971.  
  972.    public static void setModalExcluded(Window var0) {
  973.       var0.setModalExclusionType(DEFAULT_MODAL_EXCLUSION_TYPE);
  974.    }
  975.  
  976.    public static boolean isModalExcluded(Window var0) {
  977.       return var0.getModalExclusionType().compareTo(DEFAULT_MODAL_EXCLUSION_TYPE) >= 0;
  978.    }
  979.  
  980.    public boolean isModalityTypeSupported(Dialog.ModalityType var1) {
  981.       return var1 == ModalityType.MODELESS || var1 == ModalityType.APPLICATION_MODAL;
  982.    }
  983.  
  984.    public boolean isModalExclusionTypeSupported(Dialog.ModalExclusionType var1) {
  985.       return var1 == ModalExclusionType.NO_EXCLUDE;
  986.    }
  987.  
  988.    public void addModalityListener(ModalityListener var1) {
  989.       this.modalityListeners.add(var1);
  990.    }
  991.  
  992.    public void removeModalityListener(ModalityListener var1) {
  993.       this.modalityListeners.remove(var1);
  994.    }
  995.  
  996.    public void notifyModalityPushed(Dialog var1) {
  997.       this.notifyModalityChange(1300, var1);
  998.    }
  999.  
  1000.    public void notifyModalityPopped(Dialog var1) {
  1001.       this.notifyModalityChange(1301, var1);
  1002.    }
  1003.  
  1004.    final void notifyModalityChange(int var1, Dialog var2) {
  1005.       ModalityEvent var3 = new ModalityEvent(var2, this.modalityListeners, var1);
  1006.       var3.dispatch();
  1007.    }
  1008.  
  1009.    public static boolean isLightweightOrUnknown(Component var0) {
  1010.       if (!var0.isLightweight() && getDefaultToolkit() instanceof SunToolkit) {
  1011.          return !(var0 instanceof Button) && !(var0 instanceof Canvas) && !(var0 instanceof Checkbox) && !(var0 instanceof Choice) && !(var0 instanceof Label) && !(var0 instanceof List) && !(var0 instanceof Panel) && !(var0 instanceof Scrollbar) && !(var0 instanceof ScrollPane) && !(var0 instanceof TextArea) && !(var0 instanceof TextField) && !(var0 instanceof Window);
  1012.       } else {
  1013.          return true;
  1014.       }
  1015.    }
  1016.  
  1017.    static Method getMethod(Class var0, String var1, Class[] var2) {
  1018.       Method var3 = null;
  1019.  
  1020.       try {
  1021.          var3 = (Method)AccessController.doPrivileged(new 7(var0, var1, var2));
  1022.       } catch (PrivilegedActionException var5) {
  1023.          var5.printStackTrace();
  1024.       }
  1025.  
  1026.       return var3;
  1027.    }
  1028.  
  1029.    public void realSync() throws OperationTimedOut, InfiniteLoop {
  1030.       int var1 = 0;
  1031.  
  1032.       do {
  1033.          this.sync();
  1034.  
  1035.          int var2;
  1036.          for(var2 = 0; var2 < 0; ++var2) {
  1037.             this.syncNativeQueue();
  1038.          }
  1039.  
  1040.          while(this.syncNativeQueue() && var2 < 20) {
  1041.             ++var2;
  1042.          }
  1043.  
  1044.          if (var2 >= 20) {
  1045.             throw new InfiniteLoop();
  1046.          }
  1047.  
  1048.          for(var2 = 0; var2 < 0; ++var2) {
  1049.             this.waitForIdle();
  1050.          }
  1051.  
  1052.          while(this.waitForIdle() && var2 < 20) {
  1053.             ++var2;
  1054.          }
  1055.  
  1056.          if (var2 >= 20) {
  1057.             throw new InfiniteLoop();
  1058.          }
  1059.  
  1060.          ++var1;
  1061.       } while((this.syncNativeQueue() || this.waitForIdle()) && var1 < 20);
  1062.  
  1063.    }
  1064.  
  1065.    protected abstract boolean syncNativeQueue();
  1066.  
  1067.    private boolean isEQEmpty() {
  1068.       EventQueue var1 = this.getSystemEventQueueImpl();
  1069.       synchronized(SunToolkit.class) {
  1070.          if (eqNoEvents == null) {
  1071.             eqNoEvents = getMethod(EventQueue.class, "noEvents", (Class[])null);
  1072.          }
  1073.       }
  1074.  
  1075.       try {
  1076.          return (Boolean)eqNoEvents.invoke(var1);
  1077.       } catch (Exception var4) {
  1078.          var4.printStackTrace();
  1079.          return false;
  1080.       }
  1081.    }
  1082.  
  1083.    protected boolean waitForIdle() {
  1084.       flushPendingEvents();
  1085.       boolean var1 = this.isEQEmpty();
  1086.       this.queueEmpty = false;
  1087.       this.eventDispatched = false;
  1088.       synchronized(this.waitLock) {
  1089.          postEvent(AppContext.getAppContext(), new 8(this, this.getSystemEventQueueImpl(), (Runnable)null, 4L));
  1090.  
  1091.          try {
  1092.             while(!this.eventDispatched) {
  1093.                this.waitLock.wait();
  1094.             }
  1095.          } catch (InterruptedException var8) {
  1096.             return false;
  1097.          }
  1098.       }
  1099.  
  1100.       try {
  1101.          Thread.sleep(0L);
  1102.       } catch (InterruptedException var6) {
  1103.          throw new RuntimeException("Interrupted");
  1104.       }
  1105.  
  1106.       flushPendingEvents();
  1107.       synchronized(this.waitLock) {
  1108.          return !this.queueEmpty || !this.isEQEmpty() || !var1;
  1109.       }
  1110.    }
  1111.  
  1112.    public abstract void grab(Window var1);
  1113.  
  1114.    public abstract void ungrab(Window var1);
  1115.  
  1116.    public static native void closeSplashScreen();
  1117.  
  1118.    private void fireDesktopFontPropertyChanges() {
  1119.       this.setDesktopProperty("awt.font.desktophints", getDesktopFontHints());
  1120.    }
  1121.  
  1122.    public static void setAAFontSettingsCondition(boolean var0) {
  1123.       if (var0 != lastExtraCondition) {
  1124.          lastExtraCondition = var0;
  1125.          if (checkedSystemAAFontSettings) {
  1126.             checkedSystemAAFontSettings = false;
  1127.             Toolkit var1 = Toolkit.getDefaultToolkit();
  1128.             if (var1 instanceof SunToolkit) {
  1129.                ((SunToolkit)var1).fireDesktopFontPropertyChanges();
  1130.             }
  1131.          }
  1132.       }
  1133.  
  1134.    }
  1135.  
  1136.    private static RenderingHints getDesktopAAHintsByName(String var0) {
  1137.       Object var1 = null;
  1138.       var0 = var0.toLowerCase(Locale.ENGLISH);
  1139.       if (var0.equals("on")) {
  1140.          var1 = RenderingHints.VALUE_TEXT_ANTIALIAS_ON;
  1141.       } else if (var0.equals("gasp")) {
  1142.          var1 = RenderingHints.VALUE_TEXT_ANTIALIAS_GASP;
  1143.       } else if (!var0.equals("lcd") && !var0.equals("lcd_hrgb")) {
  1144.          if (var0.equals("lcd_hbgr")) {
  1145.             var1 = RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR;
  1146.          } else if (var0.equals("lcd_vrgb")) {
  1147.             var1 = RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB;
  1148.          } else if (var0.equals("lcd_vbgr")) {
  1149.             var1 = RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VBGR;
  1150.          }
  1151.       } else {
  1152.          var1 = RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB;
  1153.       }
  1154.  
  1155.       if (var1 != null) {
  1156.          RenderingHints var2 = new RenderingHints((Map)null);
  1157.          var2.put(RenderingHints.KEY_TEXT_ANTIALIASING, var1);
  1158.          return var2;
  1159.       } else {
  1160.          return null;
  1161.       }
  1162.    }
  1163.  
  1164.    private static boolean useSystemAAFontSettings() {
  1165.       if (!checkedSystemAAFontSettings) {
  1166.          useSystemAAFontSettings = true;
  1167.          String var0 = null;
  1168.          Toolkit var1 = Toolkit.getDefaultToolkit();
  1169.          if (var1 instanceof SunToolkit) {
  1170.             var0 = (String)AccessController.doPrivileged(new GetPropertyAction("awt.useSystemAAFontSettings"));
  1171.          }
  1172.  
  1173.          if (var0 != null) {
  1174.             useSystemAAFontSettings = Boolean.valueOf(var0);
  1175.             if (!useSystemAAFontSettings) {
  1176.                desktopFontHints = getDesktopAAHintsByName(var0);
  1177.             }
  1178.          }
  1179.  
  1180.          if (useSystemAAFontSettings) {
  1181.             useSystemAAFontSettings = lastExtraCondition;
  1182.          }
  1183.  
  1184.          checkedSystemAAFontSettings = true;
  1185.       }
  1186.  
  1187.       return useSystemAAFontSettings;
  1188.    }
  1189.  
  1190.    protected RenderingHints getDesktopAAHints() {
  1191.       return null;
  1192.    }
  1193.  
  1194.    public static RenderingHints getDesktopFontHints() {
  1195.       if (useSystemAAFontSettings()) {
  1196.          Toolkit var0 = Toolkit.getDefaultToolkit();
  1197.          if (var0 instanceof SunToolkit) {
  1198.             RenderingHints var1 = ((SunToolkit)var0).getDesktopAAHints();
  1199.             return var1;
  1200.          } else {
  1201.             return null;
  1202.          }
  1203.       } else {
  1204.          return desktopFontHints != null ? (RenderingHints)((RenderingHints)desktopFontHints.clone()) : null;
  1205.       }
  1206.    }
  1207.  
  1208.    public abstract boolean isDesktopSupported();
  1209.  
  1210.    public static synchronized void consumeNextKeyTyped(KeyEvent var0) {
  1211.       if (consumeNextKeyTypedMethod == null) {
  1212.          consumeNextKeyTypedMethod = getMethod(DefaultKeyboardFocusManager.class, "consumeNextKeyTyped", new Class[]{KeyEvent.class});
  1213.       }
  1214.  
  1215.       try {
  1216.          consumeNextKeyTypedMethod.invoke(KeyboardFocusManager.getCurrentKeyboardFocusManager(), var0);
  1217.       } catch (IllegalAccessException var2) {
  1218.          var2.printStackTrace();
  1219.       } catch (InvocationTargetException var3) {
  1220.          var3.printStackTrace();
  1221.       }
  1222.  
  1223.    }
  1224.  
  1225.    // $FF: synthetic method
  1226.    static Field access$000() {
  1227.       return isPostedField;
  1228.    }
  1229.  
  1230.    // $FF: synthetic method
  1231.    static Object access$100(SunToolkit var0) {
  1232.       return var0.waitLock;
  1233.    }
  1234.  
  1235.    // $FF: synthetic method
  1236.    static boolean access$202(SunToolkit var0, boolean var1) {
  1237.       return var0.queueEmpty = var1;
  1238.    }
  1239.  
  1240.    // $FF: synthetic method
  1241.    static boolean access$300(SunToolkit var0) {
  1242.       return var0.isEQEmpty();
  1243.    }
  1244.  
  1245.    // $FF: synthetic method
  1246.    static boolean access$402(SunToolkit var0, boolean var1) {
  1247.       return var0.eventDispatched = var1;
  1248.    }
  1249.  
  1250.    static {
  1251.       AWT_LOCK_COND = AWT_LOCK.newCondition();
  1252.       peerMap = AWTAutoShutdown.getInstance().getPeerMap();
  1253.       appContextMap = Collections.synchronizedMap(new WeakHashMap());
  1254.       imgCache = new SoftCache();
  1255.       startupLocale = null;
  1256.       dataTransfererClassName = null;
  1257.       mPeer = null;
  1258.       DEFAULT_MODAL_EXCLUSION_TYPE = (Dialog.ModalExclusionType)AccessController.doPrivileged(new 6());
  1259.       lastExtraCondition = true;
  1260.       consumeNextKeyTypedMethod = null;
  1261.    }
  1262. }
  1263.